package Controller;

import java.util.ArrayList;
import java.util.List;

import Beans.PlanProduccionBean;
import DAO.HibernatePlanProduccionDAO;
import DTO.PlanProduccionDTO;
import Model.PlanProduccion;

public class AdministradorPlanProduccion {
private static AdministradorPlanProduccion instancia;
	
	private AdministradorPlanProduccion(){
		
	}
	
	public static AdministradorPlanProduccion getInstancia(){
		if(instancia==null){
			instancia=new AdministradorPlanProduccion();
		}
		return instancia;
	}

	public List<PlanProduccionBean> fromModelToBean(List<PlanProduccion> planProduccions) {
		List<PlanProduccionBean> planProduccionsBean=new ArrayList<PlanProduccionBean>();
		for (PlanProduccion planProduccion : planProduccions) {
			planProduccionsBean.add(fromModelTOBean(planProduccion));
		}
		return planProduccionsBean;
	}

	public PlanProduccionBean fromModelTOBean(PlanProduccion planProduccion) {
		PlanProduccionBean planProduccionBean=null;
		if(planProduccion!=null){
		planProduccionBean=new PlanProduccionBean();
		planProduccionBean.setArea(AdministradorArea.getInstancia().fromModelTOBean(planProduccion.getArea()));
		planProduccionBean.setId(planProduccion.getId());
		planProduccionBean.setEstado(planProduccion.getEstado());
		planProduccionBean.setFecha(planProduccion.getFecha());
		planProduccionBean.setItems(AdministradorItemPlanProduccion.getInstancia().fromModelTOBean(planProduccion.getItems()));
		planProduccionBean.setTiempo(planProduccion.getTiempo());
		planProduccionBean.setPorcentaje(planProduccion.getPorcentaje());
		planProduccionBean.setSucursal(AdministradorSucursal.getInstancia().fromModelTOBean(planProduccion.getSucursal()));
		}
		return planProduccionBean;
	}

	public List<PlanProduccion> fromDTOTOModel(List<PlanProduccionDTO> planProduccionsDTO) {
		List<PlanProduccion> planProduccions=new ArrayList<PlanProduccion>();
		for (PlanProduccionDTO planProduccionDTO : planProduccionsDTO) {
			planProduccions.add(fromDTOTOModel(planProduccionDTO));
		}
		return planProduccions;
	}
	public PlanProduccion fromDTOTOModel(PlanProduccionDTO planProduccionDTO) {
		PlanProduccion planProduccion=null;
		if(planProduccionDTO!=null){
		planProduccion=new PlanProduccion();
		planProduccion.setArea(AdministradorArea.getInstancia().fromDTOTOModel(planProduccionDTO.getArea()));
		planProduccion.setId(planProduccionDTO.getId());
		planProduccion.setEstado(planProduccionDTO.getEstado());
		planProduccion.setFecha(planProduccionDTO.getFecha());
		planProduccion.setItems(AdministradorItemPlanProduccion.getInstancia().fromDTOTOModel(planProduccionDTO.getItems()));
		planProduccion.setTiempo(planProduccionDTO.getTiempo());
		planProduccion.setPorcentaje(planProduccionDTO.getPorcentaje());
		planProduccion.setSucursal(AdministradorSucursal.getInstancia().fromDTOTOModel(planProduccionDTO.getSucursal()));
		}
		return planProduccion;
	}
	
	public List<PlanProduccionDTO> fromModelTODTO(List<PlanProduccion> planProduccions) {
		List<PlanProduccionDTO> planProduccionsDTO=new ArrayList<PlanProduccionDTO>();
		for (PlanProduccion planProduccion : planProduccions) {
			planProduccionsDTO.add(fromModelTODTO(planProduccion));
		}
		return planProduccionsDTO;
	}
	public PlanProduccionDTO fromModelTODTO(PlanProduccion planProduccion) {
		PlanProduccionDTO planProduccionDTO=null;
		if(planProduccion!=null){
			planProduccionDTO=new PlanProduccionDTO();
			planProduccionDTO.setArea(AdministradorArea.getInstancia().fromModelTODTO(planProduccion.getArea()));
			planProduccionDTO.setId(planProduccion.getId());
			planProduccionDTO.setEstado(planProduccion.getEstado());
			planProduccionDTO.setFecha(planProduccion.getFecha());
			planProduccionDTO.setItems(AdministradorItemPlanProduccion.getInstancia().fromModelTODTO(planProduccion.getItems()));
			planProduccionDTO.setTiempo(planProduccion.getTiempo());
			planProduccionDTO.setPorcentaje(planProduccion.getPorcentaje());
			planProduccionDTO.setSucursal(AdministradorSucursal.getInstancia().fromModelTODTO(planProduccion.getSucursal()));
		}
		return planProduccionDTO;
	}

	public List<PlanProduccion> fromBeanTOModel(List<PlanProduccionBean> planProduccionsBean) {
		List<PlanProduccion> planProduccions=new ArrayList<PlanProduccion>();
		for (PlanProduccionBean planProduccionBean : planProduccionsBean) {
			planProduccions.add(fromBeanTOModel(planProduccionBean));
		}
		return planProduccions;
	}

	public PlanProduccion fromBeanTOModel(PlanProduccionBean planProduccionBean) {
		PlanProduccion planProduccion=null;
		if(planProduccionBean!=null){
			planProduccion=new PlanProduccion();
			planProduccion.setArea(AdministradorArea.getInstancia().fromBeanTOModel(planProduccionBean.getArea()));
			planProduccion.setId(planProduccionBean.getId());
			planProduccion.setEstado(planProduccionBean.getEstado());
			planProduccion.setFecha(planProduccionBean.getFecha());
			planProduccion.setItems(AdministradorItemPlanProduccion.getInstancia().fromBeanTOModel(planProduccionBean.getItems()));
			planProduccion.setTiempo(planProduccionBean.getTiempo());
			planProduccion.setPorcentaje(planProduccionBean.getPorcentaje());
			planProduccion.setSucursal(AdministradorSucursal.getInstancia().fromBeanTOModel(planProduccionBean.getSucursal()));
		}
		return planProduccion;
	}

	public void grabarPlanProduccion(PlanProduccion planProduccion) {
		PlanProduccionBean fb=fromModelTOBean(planProduccion);
		HibernatePlanProduccionDAO.getInstancia().grabarPlanProduccion(fb);
		
	}
	
	public PlanProduccion buscarPlanProduccion(PlanProduccion f){
		PlanProduccionBean fb=fromModelTOBean(f);
		fb=HibernatePlanProduccionDAO.getInstancia().buscarPlanProduccion(fb);
		return fromBeanTOModel(fb);
	}

	public List<PlanProduccionBean> fromModelTOBean(
			List<PlanProduccion> planes) {
		List<PlanProduccionBean> planesb=new ArrayList<PlanProduccionBean>();
		for (PlanProduccion planProduccion : planes) {
			PlanProduccionBean planb=fromModelTOBean(planProduccion);
			planesb.add(planb);
		}
		return planesb;
	}

	public void updatePlanProduccion(PlanProduccion plan) {
		PlanProduccionBean ppb=fromModelTOBean(plan);
		HibernatePlanProduccionDAO.getInstancia().update(ppb);
		
	}
}
